model_config:
  class_name: tensorflow_asr.models.ctc.deepspeech2>DeepSpeech2
  config:
    name: deepspeech2
    speech_config:
      sample_rate: 16000
      frame_ms: 25
      stride_ms: 10
      nfft: 512
      num_feature_bins: 160
      feature_type: spectrogram
      augmentation_config:
        feature_augment:
          time_masking:
            prob: 1.0
            num_masks: 5
            mask_factor: -1 # whole utterance
            p_upperbound: 0.05
            mask_value: 0
          freq_masking:
            prob: 1.0
            num_masks: 1
            mask_factor: 27
            mask_value: 0
    conv_type: conv2d
    conv_kernels: [ [ 11, 41 ], [ 11, 21 ] ]
    conv_strides: [ [ 2, 2 ], [ 1, 2 ] ]
    conv_filters: [ 32, 32 ]
    conv_activation: relu
    conv_padding: same
    conv_initializer: he_uniform
    rnn_nlayers: 5
    rnn_type: lstm
    rnn_units: 512
    rnn_bidirectional: True
    rnn_unroll: False
    rnn_rowconv: 0
    rnn_rowconv_activation: relu
    rnn_dropout: 0.5
    fc_nlayers: 1
    fc_units: 1024
    fc_activation: relu
    fc_dropout: 0.5
    fc_initializer: he_uniform
    blank: 0
    vocab_size: {{decoder_config.vocabsize}}
    kernel_regularizer:
      class_name: l2
      config:
        l2: 0.0005
    bias_regularizer:
      class_name: l2
      config:
        l2: 0.0005

learning_config:
  optimizer_config:
    class_name: Adam
    config:
      learning_rate:
        class_name: ExponentialDecay
        module: keras.src.optimizers.schedules.learning_rate_schedule
        config:
          initial_learning_rate: 0.0001
          decay_steps: 5000
          decay_rate: 0.9
          staircase: True

  gwn_config: null

  gradn_config: null

  batch_size: 16
  ga_steps: 4
  num_epochs: 450

  callbacks:
    - class_name: tensorflow_asr.callbacks>TerminateOnNaN
      config: {}
    - class_name: tensorflow_asr.callbacks>ModelCheckpoint
      config:
        filepath: {{modeldir}}/checkpoints/{epoch:02d}.weights.h5
        save_best_only: False
        save_weights_only: True
        save_freq: epoch
    - class_name: tensorflow_asr.callbacks>TensorBoard
      config:
        log_dir: {{modeldir}}/tensorboard
        histogram_freq: 0
        write_graph: False
        write_images: False
        write_steps_per_second: False
        update_freq: batch
        profile_batch: 0
    - class_name: tensorflow_asr.callbacks>KaggleModelBackupAndRestore
      config:
        model_handle: {{kaggle_model_handle}}
        model_dir: {{modeldir}}
        save_freq: epoch

